package datos;

import java.io.Serializable;
import javax.persistence.*;

/**
 * @version 1.0
 * @author Andres Mejia -Fabio Giraldo
 * 
 * Entity implementation class for Entity: Oferta
 * 
 * @param identificacion llave primaria de la entidad.
 * @param valorOfertado es la cantidad que un usuario oferta concretamente por un automovil.
 * @param usuario es la persona que realiza la oferta. 
 * @param subasta hace referencia a la subasta a la cual se le hizo la oferta.
 *
 */
@Entity

public class Oferta implements Serializable {

	   
	

	@Id
	@GeneratedValue
	private int identificacion;
	private double valorOfertado;
	private Fecha fecha;
	
	@ManyToOne
	Usuario usuario;
	
	@ManyToOne
	Subasta subasta;
	
	private static final long serialVersionUID = 1L;


	/**
	 * Constructor de la clase 
	 **/  
	public Oferta() 
	{
		super();
	}   
	
	/**
	 * 
	 * @return identificacion devuelve el valor de la identificacion de la oferta.
	 */
	
	public int getIdentificacion() {
		return this.identificacion;
	}

	/**
	 * este metodo permite modificar la identificacion de una oferta.
	 * @param identificacion
	 */
	public void setIdentificacion(int identificacion) {
		this.identificacion = identificacion;
	}   
	
	/**
	 * 
	 * @return valorOfertado devuelve la cantidad que un usuario ofertto concretamente en una subasta.
	 */
	public double getValorOfertado() {
		return this.valorOfertado;
	}

	/**
	 * este metodo permite modificar el valor ofertado por una persona en una subasta.
	 * @param valorOfertado
	 */
	public void setValorOfertado(double valorOfertado) {
		this.valorOfertado = valorOfertado;
	}
	
	/**
	 * 
	 * @return subasta devuelve la subasta a la cual pertenece la oferta.
	 */
	public Subasta getSubasta() {
		return subasta;
	}
	
	/**
	 * este metodo permite modificar la subasta a la que se le hizo la oferta.
	 * @param subasta
	 */
	public void setSubasta(Subasta subasta) {
		this.subasta = subasta;
	}
	
	/**
	 * 
	 * @return usuario devuelve el usuario que hizo la oferta.
	 */
	public Usuario getUsuario() {
		return usuario;
	}
	
	/**
	 * este metodo permite modificar el usuario que ha hecho una oferta.
	 * @param usuario
	 */
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	/**
	 * este metodo devuelve la fecha en que fue hecha una oferta
	 * @return fecha
	 */
	public Fecha getFecha() {
		return fecha;
	}

	/**
	 * este metodo permite modoficat el valor de la fecha de una oferta
	 * @param fecha
	 */
	public void setFecha(Fecha fecha) {
		this.fecha = fecha;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + identificacion;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Oferta other = (Oferta) obj;
		if (identificacion != other.identificacion)
			return false;
		return true;
	}
   
}
